import Vue from "vue";
import Vuex from "vuex";
// 使用插件，会在组件上添加一些方法
Vue.use(Vuex);
// 管理数据库
const state = {
  count: 0,
};
// 计算属性第四个模块
const getters = {
  oddOrEven(state) {
    return (state.count & 1)===1 ? "奇数" : "偶数";
  },
};
// 里面有多个方法是间接修改数据，触发commit函数,一般是返送请求操作
const actions = {
  // 使用commit方法，可以传两个参数store是vuex自己分装好的
  increment(store, num) {
    store.commit("INCREMENT", num);
  },
  decrement({ commit }, num) {
    commit("DECREMENT", num);
  },
  incrementIfOdd({ commit, state }, num) {
    // 判断state数据是否为奇数,偶数&1为0奇数&1为1
    if (state.count & 1) {
      commit("INCREMENT", num);
    }
  },
  incrementAsync({ commit }, num) {
    setTimeout(() => {
      commit("INCREMENT", num);
    }, 1000);
  },
};
//里面有多个方法，直接修改state的数据
const mutations = {
  INCREMENT(state, num) {
    state.count += num;
  },
  DECREMENT(state, num) {
    state.count -= num;
  },
};
export default new Vuex.Store({
  state,
  getters,
  actions,
  mutations,
});
